package main

import "fmt"

// 定义Persons结构体
type Persons struct {
	Name string
}

// 给Persons解耦固体绑定方法test,参数设置为指针类型
func (p *Persons) test() {
	p.Name = "二狗子"
	fmt.Println(p.Name) // 二狗子
}

// go的方法作用在指定的数据类型上和指定的数据类型绑定,因此自定义类型,都可以有方法,而不仅仅是struct
// 比如int,float32等,都可可以有方法
type integer int

func (i integer) print() {
	i = 30
	fmt.Println(i) // 30
}
func (i *integer) change() {
	*i = 30
	fmt.Println(*i) // 30
}

func main() {
	var p Persons
	p.Name = "二狗"
	p.test()            // demo()方法中给替换成了  二狗子
	fmt.Println(p.Name) // 二狗子

	var i integer = 20
	i.print()
	i.change()
	fmt.Println(i) // 30
}
